home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
031-040
/
amok37
/
skrÄbel
/
sc_computer-mod-asm.zoo
/
Skräbel-src
/
sc_Computer-Mod.ASM
/
SteineGelegtMoeglich.ASM
< prev
next >
Wrap
Assembly Source File
|
1990-03-19
|
3KB
|
126 lines
;(*****************************************************************************
;
; :Program. SteineGelegtMoeglich.ASM
; :Author. Georg Brünsing
; :Address. Grechte 2, D-4156 Willich 3
; :Phone. 02156/7534
; :ShortCut. gb
; :Support. -
; :Version. 1.0
; :Date. 20-Feb-89
; :Copyright. PD
; :Language. Assembler
; :Translator. Profimat / DATA BECKER
; :Imports. -
; :Update. -
; :History. -
; :ModHistory. -
; :Contents. Assembler Source für Skräbel
; :Remark. -
; :Usage. -
;
;*****************************************************************************)
INCLUDE "Rec.ASM"
SteineGelegtMoeglich:
; Eingang in A2 = ComputerMsgPtr
; Ausgang in D0 = TRUE wenn Ok
\Sprung EQUR A6
\Gesetzt EQUR A6
\RSpZug EQUR A5
\Wort EQUR A3
\ComMsgPtr EQUR A2
\ZugRing EQUR A1
\Spielfeld EQUR A0
\A5Retten EQUR D5
\right EQUR D4
\down EQUR D3
\Off EQUR D2
\Bool EQUR D0
\ch EQUR D1
MOVE.L A5 , \A5Retten
LEA ZugRing(\ComMsgPtr) , \ZugRing
MOVE.W AkZugRing(\ComMsgPtr) , \Off
SUBQ.W #BeginZugRing , \Off
MULU #ZugRingSize , \Off
LEA (\ZugRing,\Off.W) , \ZugRing
MOVE.W left(\ZugRing) , \right
BLE \Nicht_Ok
SUBQ.W #1 , \right
MOVE.W top(\ZugRing) , \down
BLE \Nicht_Ok
SUBQ.W #1 , \down
LEA Spielfeld(\ComMsgPtr), \Spielfeld
LEA Wort(\ComMsgPtr) , \Wort
CLR.W RAnzSpZuege(\ZugRing)
MOVE.W \right , \Off
MULU #FeldAnz , \Off
ADD.W \down , \Off
\LOOP:
MOVE.B (\Wort)+ , \ch
BEQ.S \EXIT
TST.B (\Spielfeld,\Off.W)
BEQ.S \IF_1_ELSE
CMP.B (\Spielfeld,\Off.W) , \ch
BNE.S \Nicht_Ok
BRA.S \END_IF_1
\IF_1_ELSE:
LEA Gesetzt(\ZugRing) , \Gesetzt
LEA RSpZug(\ZugRing) , \RSpZug
\REPEAT:
TST.B (\Gesetzt)+
BNE.S \UNTIL
CMP.B char(\RSpZug) , \ch
BEQ.S \UNTIL_END
\UNTIL:
ADDQ.L #SpielerZugSize , \RSpZug
BRA.S \REPEAT
\UNTIL_END:
MOVE.W \right , XPos(\RSpZug)
ADDQ.W #1 , XPos(\RSpZug)
MOVE.W \down , YPos(\RSpZug)
ADDQ.W #1 , YPos(\RSpZug)
ST -(\Gesetzt)
ADDQ.W #1 , RAnzSpZuege(\ZugRing)
\END_IF_1:
TST.B (\Wort)
BEQ.S \EXIT
CMP.B #SenkrechtBit , RAngelegt(\ZugRing)
BNE.S \Waagerecht
ADDQ.W #1 , \down
CMP.W #FeldAnz-1 , \down
BGT.S \Nicht_Ok
ADDQ.W #1 , \Off
BRA.S \END_IF_2
\Waagerecht:
ADDQ.W #1 , \right
CMP.W #FeldAnz-1 , \right
BGT.S \Nicht_Ok
ADD.W #FeldAnz , \Off
\END_IF_2:
BRA.S \LOOP
\EXIT:
TST.W RAnzSpZuege(\ZugRing)
BEQ.S \Nicht_Ok
MOVE.L AdrAngrenzungenOk(\ComMsgPtr) , \Sprung
BSR.S \right_down_wegschreiben
JMP (\Sprung)
\Ok:
MOVEQ #-1 , \Bool
BRA.S \right_down_wegschreiben
\Nicht_Ok:
MOVEQ #0 , \Bool
\right_down_wegschreiben:
MOVEA.L \A5Retten , A5
ADDQ.W #1 , \right
MOVE.W \right , right(\ZugRing)
ADDQ.W #1 , \down
MOVE.W \down , down(\ZugRing)
RTS
END